#! /usr/local/bin/python
import sys, marshal, regex, os, string, getopt, wwwlib
PLACES = '.wwwplaces'
def main():
places_file = PLACES
if os.environ.has_key('HOME'):
places_file = os.path.join(os.environ['HOME'], places_file)
#
wantbyaddr = wantbytitle = 0
#
opts, args = getopt.getopt(sys.argv[1:], 'atp:')
for o, a in opts:
if o == '-p':
places_file = a
if o == '-a':
wantbyaddr = 1
if o == '-t':
wantbytitle = 1
#
if not wantbyaddr and not wantbytitle:
wantbytitle = 1
#
types = []
progs = []
for arg in args:
if not arg: continue
if arg[0] == '!': type = '!'; arg = arg[1:]
else: type = ''
progs.append(type, regex.compile(string.lower(arg)))
if type not in types: types.append(type)
#
f = open(places_file, 'r')
places = marshal.load(f)
f.close()
#
bytitle = []
byaddr = []
#
for addr in places.keys():
title, exits = places[addr]
title = string.strip(title)
if progs:
lctitle = string.lower(title)
lcaddr = string.lower(addr)
good = 0
bad = 0
for type, prog in progs:
if prog.search(lctitle) >= 0 or \
prog.search(lcaddr) >= 0:
if type == '!':
bad = 1
else:
good = 1
break
if bad:
continue
if not good:
if '' in types:
continue
if not title: title = '(untitled)'
bytitle.append(title, addr)
byaddr.append(addr, title)
#
bytitle.sort()
byaddr.sort()
#
print 'Places you have visited'
if args:
print 'Search keywords:'
for arg in args:
print arg
print ''
if wantbytitle:
print '
Places you have visited, by title
'
for title, addr in bytitle:
print ''+ title + '', \
addr, ''
if wantbyaddr:
print '
Places you have visited, by address
'
for addr, title in byaddr:
print '' + addr + '', \
title, ''
main()